プログラミングやRPG(作るほう)が好きな人の日記
このホームページは毎日 夜11時にアクセスできなくなります。 朝6時半に再開されます。(世の中のネット依存対策として) 「homepage6047.sakura.ne.jp」は 2020/7/1 に、「web6047.sakura.ne.jp」に変更予定です。 URL は https でもアクセスできます。 |
また書き進めました。
「2アドレス2ビットメモリー」の「アドレス1を読み込み」について説明しました。
2019年9月1日の日記が
5か月もかかって。 ―――― まだかかるの? |
(訪問者のどんなニーズと この記事がつながるか)
年末に購入した秋月電子通商の「TFT液晶モジュールATM0430D25」ですが、スタンドはないし、どこかに取り付けるためのネジ穴も何もない部品なので、困りました。
ネットで検索すると、テープで固定している人もいて、皆さん困っているようです。
左の画像リンクをクリックすると 画像を拡大 します。
そこで「スタンドを作ろう」と思って、ドラッグストアで木工用ボンドと割りばしを買いました。
割りばし?!
固定できればいいので、見た目は気にしません。
なお、木工用ボンドは「木工用」と言う通り、木と木をかなり強力に接続してくれます。なので今回のようにちょっとしたスタンドを作りたいときは うってつけだと思います。
左の画像リンクをクリックすると 画像を拡大 します。
割りばしなので見た目は適当になりますが、それでも寸法を取って三面図も作成して、素人ながら設計みたいなことをしました。
割りばしを寸法どおりに切断する方法ですが、ものさしと鉛筆を使って切断したい場所にしるしをつけ、しるしの部分にニッパーの歯を合わせ、ぎゅっとはさんでできるだけ切り込みを入れたあと、両手で慎重にぐいぐいと しならせれば、割ときれいに切断できます。
割りばしをニッパーでちからまかせに一度に切断しようとすると、切った先が弾丸のように飛び、液晶テレビなどに当たって危険なのでやめておきましょう。
割りばしは上のほうがつながっていて、先の細い部分は割れてますよね。上のほうを使い、先の細い部分は捨てるようにします。
新品で50本入りで、作業後に数えたら34本残っていたので、16本使ったということですね。参考にしてください。
設計図の部品dの長さは 35mm になっていますが、実際は 30mm に変更し、垂直に立てるようにして組み立てました。
左の画像リンクをクリックすると 画像を拡大 します。
製作中の様子。
作業台の上に何かをしかないと、作業台がボンドでベタベタになってしまいます。
木工用ボンドの作業に、アルミはくをしくと具合が良いかどうかはわかりませんが、具合が良い気がしたのでしいてみました。
作業台はベタベタにならず良かったのですが、製作物とアルミはくがボンドでちょっとだけくっつきました。
木工用ボンドは瞬間接着剤ではないので すぐにはくっつきません。なので、すべてを一度に組み立てようとせず、ある程度乾くまで待つことも必要です。
左の画像リンクをクリックすると 画像を拡大 します。
木工用ボンドが乾くまで扇風機をかけて、そのあいだ、歯医者に行く予定があったので行ってきて、帰ってきたところで、乾いたようだったので、さっそく使ってみました。わくわく♪
オールインワンで、お盆の上にでも乗せたような感じがします。価格も強度も申し分ありません。
左の画像リンクをクリックすると 画像を拡大 します。
裏から見たところ。
液晶からコネクタへ向かって出ているフィルム状のケーブル(フレキシブル・フラット・ケーブル)が一番作業しづらい感じで難点でしたが、うまく よけるようにスタンドを作ったので、どこにも干渉せずコネクタへ伸びています。
なお、写真では「フレキコネクタディップ化基板」がブレッドボードの上に乗っていますが、これは乗っているだけで、ブレッドボード上に回路を作っているわけではありません。本来無いピンをディップ化基板の4隅に取り付けてブレッドボード上に固定できるように工夫しています。
また、マイコンが同ディップ化基板を介して液晶とつながっていますが、プログラムはまだこれから作るところで、液晶への画像表示はまだできていません。回路図やC言語プログラムを期待した方にはすみませんが。。
左の画像リンクをクリックすると 画像を拡大 します。
これで わずらわしさなしに作業できそうで良かったです。
(…でも、液晶に映像を表示させるために、9MHzの高周波が必要らしく、ブレッドボードで高周波の回路は安定できない可能性があるので…、それは後で困りそうではある。 orz)
割りばしと木工用ボンドでスタンドを作ると良いよというお話でした。
(訪問者のどんなニーズと この記事がつながるか)
今月のスクリプトは「回転する板たち」です。
たくさんのカラフルな半透明の板がすきまなく並び、それぞれが それぞれのスピードで回転しています。
1つの板は4つの頂点を持つただの四角形です。4つの頂点はそれぞれ x, y, z の座標を持っていて、3次元空間に配置されています。
x, y, z の3次元座標は、次の式で h, v の2次元座標に変換できます。なお、x, y のアルファベットは3次元座標で使っているので、x, y ではなく h, v を使って2次元座標をあらわします。
h = x * ( s / z )、 v = y * ( s / z )
※s は 50 や 200 など固定値で、一度決めたら変化することは通常はありません。画角、焦点距離、またはレンズサイズを意味する値です。
ここでは、3次元計算で必要とされる、3つの変換(モデル変換、ビュー変換、プロジェクション変換)や数学の行列計算、それから DirectX や OpenGL(webGL) などグラフィック・ハードウェアにアクセスするようなライブラリも使っていません。
3次元計算はそれら難しい概念に苦しむことなく、上記2式で比較的簡単に計算できます(Wikipedia 3次元グラフィクス - 原理)。
「比較的」簡単といわざるをえない(結局難しい)のは、計算はたとえ簡単でも、プログラミングしてみるといくつか壁にぶつかって四苦八苦すると思うからです。それがどういう壁なのかは「簡単な「3DCGの原理」で計算しても、難しいところがある」を見てください。
ちなみにこのリンク先の、
←この女の子と、 ←この女の子は、同一人物です。
あと3か月前から使っているモザイク処理がプログラムの開始時点で入っていますが、入れるつもりはなかったんですけど、気が付いたらモザイク処理になっていました。先月のスクリプトをそのままコピーして、先月の動きの部分を全部削除して、それで今月分の動きを作り始めたので、モザイク処理も消えたはずと思っていたんですが、いざ動かしてみたらモザイクがかかったので「あれ?」みたいな。
あれ? モザイクだ…
このモザイクは CANVAS の設定と、CSS の設定の2つの設定の組み合わせで実現しているもので、普通の考え方の「描く画像データをプログラムで加工する」というものではありません。プログラム以前の設定の時点でのアニメーションです。設定の値を setInterval() のタイマで繰り返し変更することでスーパーファミコンのモザイク処理みたいなダイナミックな効果になっています。
(その詳細: CANVAS タグの width, height 属性を小さくして、同 CANVAS タグの STYLE 属性(CSS)のほうの width, height を固定すれば画面のピクセルは引き伸ばされます。それだけだと単にピクセル数の少ない画面なので、JavaScript で CANVAS のコンテキストのメソッドの scale() を使って、1ピクセル当たり2ピクセル分にしたり、1ピクセル当たり10ピクセル分にしたりして、見た目のピクセルは大きくて粗くても、座標は同じ、というモザイクそのものの性質を表現しています。ただし、scale() を使う場合、save() と restore() の意味も勉強して使わないとうまくいかない事態になるかもしれません(scale()を行った状態にさらにscale()をかけておかしくなっていく)。あと CSS の crisp-edge という設定を使って粗いピクセルに対する見た目の滑らか処理(補間処理)をオフにします)
全部削除したと思って、その部分だけ消してなかったので、先月に引き続いて動いたというものです。
設定の話なので、本プログラムが白でも黒でも動く(依存性が低い)っていうことなのかな? プログラマーのあいだでは「依存性」というのがひとつのキーワード(話題)になっているんです。例えば、誰でも経験のある「うちわネタ」は他の人が聞いてもわからない話で敬遠されることがあるのと同じように、「依存性の高いプログラム(他では見られないそこにしかない具体的なものに強く結びついちゃってるプログラム)」は他の場所で使いたいときにすぐに使えないので敬遠される、ということです。そこで、「うちわネタ」を理解してもらうために『こういうことだよ』と、おおざっぱにかみ砕いて話すことと同じように、「依存性の高いプログラム」をおおざっぱに『抽象的に』書いたりします。『こういうことだよ』と話してもらえれば「ああそういうこと」と言って喜んで理解されるのと同じように、プログラムのほうでも『抽象的に』書けば「ああそういうこと」とは言いませんが喜ばれます。
「何かに依存することなく、画面に自由自在にエフェクトをかけるには…」といつも気にしていたので、自分のことながらおどろいたんですが、設定の時点の変更であれば、依存してなくて当たり前かもしれません。
(訪問者のどんなニーズと この記事がつながるか)
このホームページの URL ですが、今年の7月1日に homepage6047.sakura.ne.jp ではなく web6047.sakura.ne.jp に変更する予定です。
6月に入ったら新しい URL にアクセスできるようにして、6月30日までは新旧両方の URL にアクセスできる状態にします。
7月1日になったら古い URL はアクセスできなくなり、新しい URL での運用になります。
ピッコロが神様と「融合」してパワーアップしたとき、クリリンあたりが「なぁ、ピッコロ、いや、神様? どっちだ?」と言って混乱していたように、「おまえのホームページ、いや、ウェブページ? どっちだ?」みたいになるかもしれませんが…。
NO PC WEEK とは私自身の健康のために私のパソコンの使用を制限する期間です。
細かいことですが、当初、「12/16(月)~ 来年 1/11(土)まで」と言っていましたが、正しくは「12/16(月)~ 来年 1/10(金)まで」でした。
そのため今日から再開しました。
NO PC WEEK を実施して良かったです。具体的には、
すべてが NO PC WEEK による結果とは言い切れないとしても、私の中ではもはや NO PC WEEK の価値は明白で、パソコンする生活とパソコンをしない生活を天秤にかけると、パソコンをしない生活のほうが重いこともわかっています。
似たような問題(~中毒、~依存症、ネトゲ、酒、ギャンブルなど)で困っている方もいると思うので少し詳しく書いていきます。(正直言うと残念ながらわかりやすい文章にはなっていません)
私の場合はパソコンのやりすぎが問題になっています。
「パソコン」と「猫一匹または人間一人」、つまり「冷たいもの」と「温かいもの」とどっちを無人島へ持っていくかという問いはよく聞かれる話だと思いますが、私はずっと前から「猫一匹または人間一人」という答えを出しています。問題は無人島という切羽詰まった状況ではなく、今現在どちらか自由に選べるグレーゾーンな状態だということです。
日ごろ、そんなに切羽詰まった状況ではなく、猫一匹も人間一人も目の前からすぐに消えたりはしません。だから選ぶとしたらとりあえずパソコンになってしまうんです。
NO PC WEEK はいわば自分で作った仮の無人島で、持参するのは「猫一匹または人間一人」です。
NO PC WEEK を始めるにあたって、これから無人島へ行くという切羽詰まった状況と似て、確実に「パソコン」ではなく「猫一匹または人間一人」を選択することができ、無人島へ行ったらなかなか出られないことと似て、その期間が終わるまでは「パソコン」には手を出さないという決まりが発生しています。
もちろん「仮の無人島」である NO PC WEEK は自分で作ったものなので、途中で欲望に負けて帳消しにしてしまえば、その期間内でもいつでも再開できてしまいますが。。
実際、NO PC WEEK を始めると、何度か誘惑が降りかかって、ちょっと誘惑と戦う必要があります。私の場合は創作やプログラミングの良いアイデアをふと思いつくという誘惑がありました。アイデアを実現したくてウズウズするんです。
正直に言うと、NO PC WEEK と言いつつ、「普通にパソコン使ってんじゃないかなぁ…?」と思ったり「何か理由を付けてパソコンを許可してないかなぁ」と思ったりしたことがありました。でもおおむね、その期間、時間的に9割以上はパソコンを使わなかったので、大丈夫な範囲かなと思います。
(パソコンを使う、使わないと言っているのは、プログラミングとか絵描きとかでパソコンを使うことについて言っています。それらの作業はとても時間がかかり疲労するので問題なんです。映画を観るとか音楽を聴くとかちょっとWEBを調べるとかそういう疲れないことにパソコンを使うのは OK としていました)
パソコンの依存症 … NO PC WEEK
ネトゲの依存症 … NO GAME WEEK
アルコール依存症 … NO ALCOHOL WEEK (NON ALCOHOL ではなく)
ギャンブル依存症 … NO GAMBLE WEEK
呼び名は大事なので、考えてみました。
WEEK(1週間)ではなく3日や1か月という場合も含めて WEEK と表現します。そのほうがわかりやすいからです。
誰かの生活を見かねている、という人も読者の中にいるかもしれません。
これは私が自分で考えて自分で始めたことであって、誰かに言われて始めたことではありません。私に動機があるので嫌々ながらということはないし、降りかかる誘惑、欲望にも負けにくいんだと思います。
欲望にどっぷり はまっている人に対し、外から勧めることは難しいと思います。その人はそれに夢中なのだし、勧める内容の良さもあなた自身も相手の方も本当のところはわからないでしょうから。
でも、この NO PC WEEK というやり方は「すっぱりやめる」というものではなく、「一定期間やめてみる」というもので、欲望に対してそんなにきつい仕打ちではなく、行いやすいです。
依存しているそれを外してみると、初めて気づく世界があるので、ちょっと見てみると良いんです。
ひとつの案として提案してみると良いかもしれません。
ただ、「自分でできないことを人に勧めることはできない」というのもあるし、「子は親を見て育つ」というのも確実にあるので、相手に勧める前にご自分が行うというのも必要かもしれません。自分をマイナスにさせている習慣があればそれについて行ってみるとか…。
自分で行ってみてこんなに良かった、という結果を出してそのうえで勧めると、勧め方も変わると思います。
この文章を書いているあいだ、私が高専生(情報工学科)の時に不登校で親が困っていたときのことを思い出しながら、もしあの時の父の立場で NO PC WEEK を私に勧めるとしたら…等 考えながら書きました。
不登校の理由は表向きは「対人恐怖症」だとか「通学で電車に乗り教室に着くまでに人に見られるのがつらい」など、そんなことを言っていましたが、今思えば本当のところは、自宅でパソコンに没頭しすぎていて生活がうまく回っていなかったこと(長時間、夜更かし)が原因で、青い顔で疲れた顔をして学校に行くことができなかったのだと言えます。
高専での不登校の結果は、私の場合は通学1年半、休学1年、復学半年、再び休学2年(かな?)で結局中退し、高専の友人の力を借りて高卒同等資格(当時の大検)を得て、いろいろな仕事を転々とし、中退の20年後くらいに情報処理の資格を取ったり、電子機器組み立ての資格を取ったりし、現在派遣で基板製作の工場ラインの仕事をしています。つい最近、情報の仕事ができなくて残念だったね、と父と話しました。
今現在の人生の結果を見ると、トータルで失敗だったのかどうかわかりませんが、45歳の今でもあれこれ夢を持ってたり、職場の人間関係どうしようどうしようなんて思っているところを見ると、どうも、まだ先があるみたいです。
ある程度自分の体験したことを元にしているので、参考になればなぁと思います。
NO PC WEEK は抜本的に改善するものではありませんが、求める生活は何なのか知ることができる、という良さがあります。
脱線しますが、ここは私のホームページなので…。45歳の私が持っているあれこれの夢というのは、
夢は大きいほうがいい。
このホームページでは、下図のように「アイコンをクリックするとプログラムが表示される」という文書がいくつかありますが、最近機能していませんでした。クリックしても何も表示されません。
この不具合を直しました。たとえばここ。
午前11時ごろ秋葉原駅を降りました。
その後3~4時間くらい、秋葉原の街を歩いていました。
メイドさんと外国人がいっぱいいました。
正直言うと、メイドさんとツーショットの写真を撮ってほしかったんだけど、それはかなわぬ願いでした。
左の画像リンクをクリックすると 画像を拡大 します。
私が二十歳の頃(20年以上前)に働いていたパソコンショップに来ると、前回来たときはトレーディングカードのお店になっていましたが、今回はまた変わっていて、1F ~ 4F までそれぞれバラバラのお店になっていました。
今回はもう、中に入る気はしませんでした。
左の画像リンクをクリックすると 画像を拡大 します。
あっここに移ったのか?
裏手に回ると、トレーディングカードのお店はここに移動していました。
私は昔、金・プラチナの鑑定の仕事(「店長」ではないけど「店舗担当」、みたいな立場)を半年ほどしたことがあって、トレーディングカードやガンプラ、DVDソフトも鑑定(買取)していました。
だからこういうお店も内容はよくわかります。
トレーディングカードを使用したゲームの全国大会で、優勝した者だけに配られるたった1枚のカードは、業界では「超レア」の位置づけで、私が働いてた当時の店舗用のデータでは、ポケモンの小さなチップタイプのトレカがたしか10万円以上で買取りされていました。売価は18万とかそういう感じです。
私も今でも時々トレカの新品パックを買ったりします。レアカードが出ると面白いんですよね。遊戯王のホログラフィックレア持ってますよ。これ でもこれ、物理的にレアで見た目がきれいでも業界では価値が低いんです。なんででしょうね。
小学生がお小遣い欲しさにトレカを売りに来ると、だいたいはあまり価値のないカードだったりしますが、そういう場合は、「きれいにしている良いかんじのカードだと思うんだけど、値段はちょっとこうなっちゃうよ?」と、品物を ほめることが重要になります。テレビの「お宝鑑定団」でも、有名な鑑定士が「1千万円 たったの5千円!!」みたいな結果になっても「…でも、とてもいい品物だと思います。大事になさってください」と言ってくれていますよね。価値は人が作り出したものですからね。気持ちが大事なんです。仕事を通してそういう勉強ができました。
それは昔話で…
左の画像リンクをクリックすると 画像を拡大 します。
今回の目的の秋月電子通商。電子回路のパーツのお店です。
小さいお店なのに、いつ来ても人でぎっしり!! 店内身動きできません!いつも!
店内中央に置かれたラズベリーパイ(むき出しの基板の形をした小型のパソコン)の陳列棚が、バージョン「4」が発売されたこともあってか盛況でした。
私は「TFT液晶モジュールATM0430D25」とそれを動かすための周辺部品、それから自宅のテレビに NTSC 方式(カラーテレビの放送規格)で映像を表示するための電子回路の部品を買いました。(液晶モジュールの表示と NTSC の表示はそれぞれ別々の動機で取り組むものです)
特に意味はありませんがレシートです。
液晶モジュールの映像信号と、NTSC の映像信号はそれぞれ VRAM とか必要だと思うので、メモリの大きい高性能なマイコンが必要なのかなと思い、秋月の他、千石電商、マルツといろいろ探し回ったんですが、これだというものが結局見つけられずあきらめました。ひとまず VRAM なしで何かを表示する工夫が必要かな…。
NTSC 方式を使ってテレビに映像を表示することができたら、「ハードウェアスクロール」をやってみたいんです。昔の話ですが、ファミコンでは実装されていたハードウェアスクロールも、PC-9801 などのパソコンでは実装されていなくて、どの PC ゲームもソフトウェアによる力技で ぎこちないスクロールをしていたんです。だからきれいなハードウェアスクロールはあこがれでした。たぶん、NTSC で送り始める VRAM のアドレスを変更するだけで実現できるんじゃないかと…。
それから、私が RPG を作る際は、小型携帯端末(Nintendo DS とか今回買った小型液晶とか)で一人プレイしてもらうよりは、テレビの大画面でみんなで1つの画面を見てワイワイやる(腹をかかえて笑うとか)…という構想を立てています。だから小さな液晶画面も楽しいんですが、NTSC での出力が必要なんです。
私はもともとプログラミングが主体の人ですが、昔、失業してハローワークの「電子回路エンジニア科」を受講して以来、電子回路でも遊ぶようになりました。
ラジオ会館やラジオデパートの中へ入っていって、「あの部品はどこ??」と探し回るようになってしまいました。通販で買えば早いんですが、歩いて買うっていうのが楽しいんですよ。
RPG とか液晶とか電気とか、それは夢の話で…
左の画像リンクをクリックすると 画像を拡大 します。
疲れた、昼ご飯どうしようと思っていたところ、「小諸そば」という蕎麦屋を見つけたので入りました。
私はファストフードやきれいなレストランには一人では入りづらく、こういう大衆食堂的な気軽なお店なら入りやすいです。ちょうどよかった。
首都圏を中心に84店舗を展開している優良立ち喰い蕎麦チェーン店「小諸そば」…と言われているお店です。私が食べたのは、
「月夜の ばかし そば」
「ばかし」って何だろうと思って調べたら、キツネ(おあげ)とタヌキ(天かす)を合わせたそばを、そば用語で「ばかし」と言うんだそうです。キツネとタヌキの化かし合いだとか。
それで月見(生たまご)にもなっているのでそういう名前になっている模様。おいしかったです。
写真にも写っていますが、店先で年越しそばを売っていたので、3人前と、ゆず胡椒とゆず七味を買いました。
私が買ったのが最初だったらしく、店員のおばあさんが売り方がわからなくてだいぶ時間がかかっていました。私は10分でも20分でも平気な性質なので気長に待っていました。
それはそばの話で…
左の画像リンクをクリックすると 画像を拡大 します。
実家の最寄り駅を降りると、駅前ロータリーでライトアップをしていました。
エレクトリカル・ロータリー! (パレードじゃなくて)
NO PC WEEK を長期間取ったおかげで、私は疲れた顔ではなく、元気な顔で兄夫婦と家族と過ごすことができました。人間関係に対する NO PC WEEK の効果が絶大で、私のパソコンの趣味の立場やいかに。
それから実家からの帰り、1/4(土)は電車乗り換えの関係で上野駅で降りて、松屋で牛丼を食べました。店内は中国人の子供たちなどいろいろな国の人々がいました。日本の食事、喜んで食べてくれるのはうれしいことですね。ただ、松屋の牛肉は10年以上前はもっと質が良かった気がする…今の牛肉が当たり前だと思って食べたほうが良いのかも? 下の写真は上野駅前です。
※画像ソフトのHDR 処理で真っ暗なはずの橋の下が見えています。HDR前
そんな年末年始を送っていました。
あけまして、おめでとうございます。
今年もよろしく。
(訪問者のどんなニーズと この記事がつながるか)
<!DOCTYPE html><!--ESCAPEPROCESS-->
<head>
<script>
function onloadx() {
//一般関数
console.log( "文字列" );
}
function Class1() {
//クラス
console.log( "文字列" );
}
Class1.prototype.method1 = function() {
//メソッド
console.log( "文字列" );
}
</script>
</head>
<body onload="onloadx();" style="">
Hello world!<BR>
</body>
</html>
<!DOCTYPE html><!--ESCAPEPROCESS-->
<head>
<script>
function onloadx() {
//一般関数
console.log( "文字列" );
}
function Class1() {
//クラス
console.log( "文字列" );
}
Class1.prototype.method1 = function() {
//メソッド
console.log( "文字列" );
}
</script>
</head>
<body onload="onloadx();" style="">
Hello world!<BR>
</body>
</html>
<!DOCTYPE html><!--ESCAPEPROCESS-->
<head>
<script>
function onloadx() {
//一般関数 コメント変更
console.log( "文字列変更" );
行追加
}
function Class1() {
//クラス コメント変更
console.log( "文字列変更" );
行追加
}
Class1.prototype.method1 = function() {
//メソッド コメント変更
console.log( "文字列変更" );
行追加
}
</script>
</head>
<body onload="onloadx();文字列変更" style="">
Hello world!<BR>
HTML追加
</body>
</html>
<!DOCTYPE html><!--ESCAPEPROCESS-->
<head>
<script>
function onloadx() {
//一般関数 コメント変更
console.log( "文字列変更" );
行追加
}
function Class1() {
//クラス コメント変更
console.log( "文字列変更" );
行追加
}
Class1.prototype.method1 = function() {
//メソッド コメント変更
console.log( "文字列変更" );
行追加
}
</script>
</head>
<body onload="onloadx();文字列変更" style="">
Hello world!<BR>
HTML追加
</body>
</html>